3.1.5 作用域链
作用域
作用域是程序源代码中定义变量的区域。
作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。
说到作用域,js 分为词法作用域(静态作用域)和动态作用域
- 词法作用域:函数的作用域在函数定义的时候就决定了。
- 动态作用域,函数的作用域是在函数调用的时候才决定的。
作用域链
当查找变量的时候,会先从当前上下文的变量对象中查找,
如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。
这样由多个执行上下文的变量对象构成的链表就叫做作用域链。
对于每个执行上下文,都有三个重要属性:
- 变量对象(Variable object,VO)
- 作用域链(Scope chain)
- this